# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>

_realname=python3

pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
_pybasever=3.4
pkgver=${_pybasever}.1
pkgrel=2
pkgdesc="A high-level scripting language (mingw-w64)"
arch=('any')
license=('PSF')
url="http://www.python.org/"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" 
        "${MINGW_PACKAGE_PREFIX}-expat"
        "${MINGW_PACKAGE_PREFIX}-bzip2"
        "${MINGW_PACKAGE_PREFIX}-gdbm"
        "${MINGW_PACKAGE_PREFIX}-readline"
        "${MINGW_PACKAGE_PREFIX}-openssl"
        "${MINGW_PACKAGE_PREFIX}-libffi"
        "${MINGW_PACKAGE_PREFIX}-zlib"
        "${MINGW_PACKAGE_PREFIX}-xz"
        "${MINGW_PACKAGE_PREFIX}-tcl"
        "${MINGW_PACKAGE_PREFIX}-tk")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-ncurses")
options=('!makeflags' 'staticlibs' 'strip')
source=("http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz"
        0100-MINGW-BASE-use-NT-thread-model.patch
        0110-MINGW-translate-gcc-internal-defines-to-python-platf.patch
        0130-MINGW-configure-MACHDEP-and-platform-for-build.patch
        0140-MINGW-preset-configure-defaults.patch
        0150-MINGW-configure-largefile-support-for-windows-builds.patch
        0160-MINGW-add-wincrypt.h-in-Python-random.c.patch
        0170-MINGW-add-srcdir-PC-to-CPPFLAGS.patch
        0180-MINGW-init-system-calls.patch
        0190-MINGW-detect-REPARSE_DATA_BUFFER.patch
        0200-MINGW-build-in-windows-modules-winreg.patch
        0210-MINGW-determine-if-pwdmodule-should-be-used.patch
        0220-MINGW-default-sys.path-calculations-for-windows-plat.patch
        0230-MINGW-AC_LIBOBJ-replacement-of-fileblocks.patch
        0240-MINGW-use-main-to-start-execution.patch
        0250-MINGW-compiler-customize-mingw-cygwin-compilers.patch
        0260-MINGW-compiler-enable-new-dtags.patch
        0270-CYGWIN-issue13756-Python-make-fail-on-cygwin.patch
        0280-issue17219-add-current-dir-in-library-path-if-buildi.patch
        0290-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch
        0300-MINGW-configure-for-shared-build.patch
        0310-MINGW-dynamic-loading-support.patch
        0320-MINGW-implement-exec-prefix.patch
        0330-MINGW-ignore-main-program-for-frozen-scripts.patch
        0340-MINGW-setup-exclude-termios-module.patch
        0350-MINGW-setup-_multiprocessing-module.patch
        0360-MINGW-setup-select-module.patch
        0370-MINGW-setup-_ctypes-module-with-system-libffi.patch
        0380-MINGW-defect-winsock2-and-setup-_socket-module.patch
        0390-MINGW-exclude-unix-only-modules.patch
        0400-MINGW-setup-msvcrt-and-_winapi-modules.patch
        0410-MINGW-build-extensions-with-GCC.patch
        0420-MINGW-use-Mingw32CCompiler-as-default-compiler-for-m.patch
        0430-MINGW-find-import-library.patch
        0440-MINGW-setup-_ssl-module.patch
        0450-MINGW-export-_PyNode_SizeOf-as-PyAPI-for-parser-modu.patch
        0460-MINGW-generalization-of-posix-build-in-sysconfig.py.patch
        0462-MINGW-support-stdcall-without-underscore.patch
        0464-use-replace-instead-rename-to-avoid-failure-on-windo.patch
        0470-MINGW-avoid-circular-dependency-from-time-module-dur.patch
        0480-MINGW-generalization-of-posix-build-in-distutils-sys.patch
        0490-MINGW-customize-site.patch
        0500-add-python-config-sh.patch
        0510-cross-darwin-feature.patch
        0520-py3k-mingw-ntthreads-vs-pthreads.patch
        0530-mingw-system-libffi.patch
        0540-mingw-semicolon-DELIM.patch
        0550-mingw-regen-use-stddef_h.patch
        0560-mingw-use-posix-getpath.patch
        0565-mingw-add-ModuleFileName-dir-to-PATH.patch
        0570-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch
        0580-mingw32-test-REPARSE_DATA_BUFFER.patch
        0590-mingw-INSTALL_SHARED-LDLIBRARY-LIBPL.patch
        0600-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
        0610-msys-cygwin-semi-native-build-sysconfig.patch
        0620-mingw-sysconfig-like-posix.patch
        0630-mingw-_winapi_as_builtin_for_Popen_in_cygwinccompiler.patch
        0640-mingw-x86_64-size_t-format-specifier-pid_t.patch
        0650-cross-dont-add-multiarch-paths-if-cross-compiling.patch
        0660-mingw-use-backslashes-in-compileall-py.patch
        0670-msys-convert_path-fix-and-root-hack.patch
        0690-allow-static-tcltk.patch
        0700-CROSS-avoid-ncursesw-include-path-hack.patch
        0710-CROSS-properly-detect-WINDOW-_flags-for-different-nc.patch
        0720-mingw-pdcurses_ISPAD.patch
        0730-mingw-fix-ncurses-module.patch
        0740-grammar-fixes.patch
        0750-builddir-fixes.patch
        0760-msys-monkeypatch-os-system-via-sh-exe.patch
        0770-msys-replace-slashes-used-in-io-redirection.patch
        0790-mingw-add-_exec_prefix-for-tcltk-dlls.patch
        0800-mingw-install-layout-as-posix.patch
        0810-remove_path_max.default.patch
        0820-dont-link-with-gettext.patch
        0830-ctypes-python-dll.patch
        0840-gdbm-module-includes.patch
        0850-use-gnu_printf-in-format.patch
        0860-fix-_Py_CheckPython3-prototype.patch
        0870-mingw-fix-ssl-dont-use-enum_certificates.patch
        1000-fix-building-posixmodule.patch)

prepare() {
  cd "${srcdir}/Python-${pkgver}"

  # these are created by patches
  rm -f Misc/config_mingw Misc/cross_mingw32 Python/fileblocks.c

  plain "Apply Roumen Petrov's core patches (15)"
  patch -Np1 -i "${srcdir}"/0100-MINGW-BASE-use-NT-thread-model.patch
  patch -Np1 -i "${srcdir}"/0110-MINGW-translate-gcc-internal-defines-to-python-platf.patch
  patch -Np1 -i "${srcdir}"/0130-MINGW-configure-MACHDEP-and-platform-for-build.patch
  patch -Np1 -i "${srcdir}"/0140-MINGW-preset-configure-defaults.patch
  patch -Np1 -i "${srcdir}"/0150-MINGW-configure-largefile-support-for-windows-builds.patch
  patch -Np1 -i "${srcdir}"/0160-MINGW-add-wincrypt.h-in-Python-random.c.patch
  patch -Np1 -i "${srcdir}"/0170-MINGW-add-srcdir-PC-to-CPPFLAGS.patch
  patch -Np1 -i "${srcdir}"/0180-MINGW-init-system-calls.patch
  patch -Np1 -i "${srcdir}"/0190-MINGW-detect-REPARSE_DATA_BUFFER.patch
  patch -Np1 -i "${srcdir}"/0200-MINGW-build-in-windows-modules-winreg.patch
  patch -Np1 -i "${srcdir}"/0210-MINGW-determine-if-pwdmodule-should-be-used.patch
  patch -Np1 -i "${srcdir}"/0220-MINGW-default-sys.path-calculations-for-windows-plat.patch
  patch -Np1 -i "${srcdir}"/0230-MINGW-AC_LIBOBJ-replacement-of-fileblocks.patch
  patch -Np1 -i "${srcdir}"/0240-MINGW-use-main-to-start-execution.patch

  plain "Apply Roumen Petrov's compiler patch (2)"
  patch -Np1 -i "${srcdir}"/0250-MINGW-compiler-customize-mingw-cygwin-compilers.patch
  patch -Np1 -i "${srcdir}"/0260-MINGW-compiler-enable-new-dtags.patch

  plain "Apply Roumen Petrov's extensions patches (23)"
  patch -Np1 -i "${srcdir}"/0270-CYGWIN-issue13756-Python-make-fail-on-cygwin.patch
  patch -Np1 -i "${srcdir}"/0280-issue17219-add-current-dir-in-library-path-if-buildi.patch
  patch -Np1 -i "${srcdir}"/0290-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch
  patch -Np1 -i "${srcdir}"/0300-MINGW-configure-for-shared-build.patch
  patch -Np1 -i "${srcdir}"/0310-MINGW-dynamic-loading-support.patch
  patch -Np1 -i "${srcdir}"/0320-MINGW-implement-exec-prefix.patch
  patch -Np1 -i "${srcdir}"/0330-MINGW-ignore-main-program-for-frozen-scripts.patch
  patch -Np1 -i "${srcdir}"/0340-MINGW-setup-exclude-termios-module.patch
  patch -Np1 -i "${srcdir}"/0350-MINGW-setup-_multiprocessing-module.patch
  patch -Np1 -i "${srcdir}"/0360-MINGW-setup-select-module.patch
  patch -Np1 -i "${srcdir}"/0370-MINGW-setup-_ctypes-module-with-system-libffi.patch
  patch -Np1 -i "${srcdir}"/0380-MINGW-defect-winsock2-and-setup-_socket-module.patch
  patch -Np1 -i "${srcdir}"/0390-MINGW-exclude-unix-only-modules.patch
  patch -Np1 -i "${srcdir}"/0400-MINGW-setup-msvcrt-and-_winapi-modules.patch
  patch -Np1 -i "${srcdir}"/0410-MINGW-build-extensions-with-GCC.patch
  patch -Np1 -i "${srcdir}"/0420-MINGW-use-Mingw32CCompiler-as-default-compiler-for-m.patch
  patch -Np1 -i "${srcdir}"/0430-MINGW-find-import-library.patch
  patch -Np1 -i "${srcdir}"/0440-MINGW-setup-_ssl-module.patch
  patch -Np1 -i "${srcdir}"/0450-MINGW-export-_PyNode_SizeOf-as-PyAPI-for-parser-modu.patch
  patch -Np1 -i "${srcdir}"/0460-MINGW-generalization-of-posix-build-in-sysconfig.py.patch
  patch -Np1 -i "${srcdir}"/0462-MINGW-support-stdcall-without-underscore.patch
  patch -Np1 -i "${srcdir}"/0464-use-replace-instead-rename-to-avoid-failure-on-windo.patch
  patch -Np1 -i "${srcdir}"/0470-MINGW-avoid-circular-dependency-from-time-module-dur.patch
  patch -Np1 -i "${srcdir}"/0480-MINGW-generalization-of-posix-build-in-distutils-sys.patch
  patch -Np1 -i "${srcdir}"/0490-MINGW-customize-site.patch

  plain "Apply Ray Donnelly's general/cross patches (29)"
  patch -Np1 -i "${srcdir}"/0500-add-python-config-sh.patch
  patch -Np1 -i "${srcdir}"/0510-cross-darwin-feature.patch
  patch -Np1 -i "${srcdir}"/0520-py3k-mingw-ntthreads-vs-pthreads.patch
  patch -Np1 -i "${srcdir}"/0530-mingw-system-libffi.patch
  patch -Np1 -i "${srcdir}"/0540-mingw-semicolon-DELIM.patch
  patch -Np1 -i "${srcdir}"/0550-mingw-regen-use-stddef_h.patch
  patch -Np1 -i "${srcdir}"/0560-mingw-use-posix-getpath.patch
  patch -Np1 -i "${srcdir}"/0565-mingw-add-ModuleFileName-dir-to-PATH.patch
  patch -Np1 -i "${srcdir}"/0570-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch
  patch -Np1 -i "${srcdir}"/0580-mingw32-test-REPARSE_DATA_BUFFER.patch
  patch -Np1 -i "${srcdir}"/0590-mingw-INSTALL_SHARED-LDLIBRARY-LIBPL.patch
  patch -Np1 -i "${srcdir}"/0600-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
  patch -Np1 -i "${srcdir}"/0610-msys-cygwin-semi-native-build-sysconfig.patch
  patch -Np1 -i "${srcdir}"/0620-mingw-sysconfig-like-posix.patch
  patch -Np1 -i "${srcdir}"/0630-mingw-_winapi_as_builtin_for_Popen_in_cygwinccompiler.patch
  patch -Np1 -i "${srcdir}"/0640-mingw-x86_64-size_t-format-specifier-pid_t.patch
  patch -Np1 -i "${srcdir}"/0650-cross-dont-add-multiarch-paths-if-cross-compiling.patch
  patch -Np1 -i "${srcdir}"/0660-mingw-use-backslashes-in-compileall-py.patch
  patch -Np1 -i "${srcdir}"/0670-msys-convert_path-fix-and-root-hack.patch
  patch -Np1 -i "${srcdir}"/0690-allow-static-tcltk.patch
  patch -Np1 -i "${srcdir}"/0700-CROSS-avoid-ncursesw-include-path-hack.patch
  patch -Np1 -i "${srcdir}"/0710-CROSS-properly-detect-WINDOW-_flags-for-different-nc.patch
  patch -Np1 -i "${srcdir}"/0720-mingw-pdcurses_ISPAD.patch
  patch -Np1 -i "${srcdir}"/0730-mingw-fix-ncurses-module.patch
  patch -Np1 -i "${srcdir}"/0740-grammar-fixes.patch
  patch -Np1 -i "${srcdir}"/0750-builddir-fixes.patch
  patch -Np1 -i "${srcdir}"/0760-msys-monkeypatch-os-system-via-sh-exe.patch
  patch -Np1 -i "${srcdir}"/0770-msys-replace-slashes-used-in-io-redirection.patch
  patch -Np1 -i "${srcdir}"/0790-mingw-add-_exec_prefix-for-tcltk-dlls.patch
  patch -Np1 -i "${srcdir}"/0800-mingw-install-layout-as-posix.patch
  patch -Np1 -i "${srcdir}"/0810-remove_path_max.default.patch
  patch -Np1 -i "${srcdir}"/0820-dont-link-with-gettext.patch
  patch -Np1 -i "${srcdir}"/0830-ctypes-python-dll.patch
  patch -Np1 -i "${srcdir}"/0840-gdbm-module-includes.patch
  patch -Np1 -i "${srcdir}"/0850-use-gnu_printf-in-format.patch
  patch -Np1 -i "${srcdir}"/0860-fix-_Py_CheckPython3-prototype.patch
  patch -Np1 -i "${srcdir}"/0870-mingw-fix-ssl-dont-use-enum_certificates.patch

  patch -Np1 -i "${srcdir}"/1000-fix-building-posixmodule.patch

  autoreconf -vfi

  # Temporary workaround for FS#22322
  # See http://bugs.python.org/issue10835 for upstream report
  #sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c

  touch Include/graminit.h
  touch Python/graminit.c
  touch Parser/Python.asdl
  touch Parser/asdl.py
  touch Parser/asdl_c.py
  touch Include/Python-ast.h
  touch Python/Python-ast.c
  echo \"\" > Parser/pgen.stamp
    
  # Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
  # rather than copies shipped in the tarball
  rm -r Modules/expat
  rm -r Modules/zlib
  rm -r Modules/_ctypes/{darwin,libffi}*
}

check() {
  cd "${srcdir}/build-${CARCH}"
  make test
}

build() {
  pushd ${MINGW_PREFIX} > /dev/null
  export PREFIX_WIN=`pwd -W`
  popd > /dev/null

  CFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/${MINGW_CHOST}/include "
  CXXFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$MINGWHOME_WIN/$HOST/include "
  CPPFLAGS+=" -I$PREFIX_WIN/include -I$PREFIX_WIN/include/ncursesw -I$PREFIX_WIN/${MINGW_CHOST}/include "
  LDFLAGS+=" -L$PREFIX_WIN/${MINGW_CHOST}/lib -L$PREFIX_WIN/lib "
  if check_option "strip" "y"; then
    LDFLAGS+=" -s "
  fi
  if check_option "debug" "n"; then
    CFLAGS+=" -DNDEBUG "
    CXXFLAGS+=" -DNDEBUG "
  else
    plain " -DDEBUG -DPy_DEBUG -D_DEBUG does not work unfortunately .."
    #    CFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
    #    CXXFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG "
    CFLAGS+=" -O0 -ggdb"
    CXXFLAGS+=" -O0 -ggdb"
  fi

  LIBFFI_INC=`${MINGW_PREFIX}/bin/pkg-config libffi --cflags-only-I | sed "s|\-I||g"`
  pushd ${LIBFFI_INC} > /dev/null
  export LIBFFI_INCLUDEDIR=`pwd -W`
  popd > /dev/null

  # Workaround for conftest error on 64-bit builds
  export ac_cv_working_tzset=no

  mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}"
  MSYSTEM=MINGW ../Python-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --host=${MINGW_CHOST} \
    --build=${MINGW_CHOST} \
    --enable-shared \
    --with-threads \
    --with-system-expat \
    --with-system-ffi \
    --without-ensurepip
    OPT=""
    #--with-dbmliborder='gdbm:ndbm'
  make
}

package() {
  cd "${srcdir}/build-${CARCH}"
  MSYSTEM=MINGW \
  MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
  make install DESTDIR="$pkgdir"

  rm "${pkgdir}${MINGW_PREFIX}"/bin/2to3
  cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}m/libpython${_pybasever}m.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}m.dll.a
  cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}m/libpython${_pybasever}m.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}.dll.a

  # some useful "stuff"
  install -dm755 "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/{i18n,scripts}
  install -m755 "${srcdir}/Python-${pkgver}"/Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/i18n/
  install -m755 "${srcdir}/Python-${pkgver}"/Tools/scripts/{README,*py} "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/scripts/

  # clean up #!s
  find "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/ -name '*.py' | \
    xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python3|"

  # clean-up reference to build directory
  sed -i "s#${srcdir}/Python-${pkgver}:##" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}m/Makefile

  for fscripts in 2to3-${_pybasever} idle3 idle${_pybasever} pydoc3 pydoc${_pybasever} pyvenv pyvenv-${_pybasever}; do
    sed -e "s|${MINGW_PREFIX}/bin/python${_pybasever}.exe|/usr/bin/env python${_pybasever}.exe|g" -i "${pkgdir}${MINGW_PREFIX}"/bin/$fscripts
  done
  
  sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}m.exe|#!/usr/bin/env python${_pybasever}.exe|" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}m/python-config.py

  # fix permissons
  find ${pkgdir}${MINGW_PREFIX} -type f \( -name "*.dll" -o -name "*.exe" \) | xargs chmod 0755

  # Fix up two instances of MSYS2 paths in python-config.sh in-case the final consumer of the results are native executables.
  sed -e "s|${MINGW_PREFIX}|${PREFIX_WIN}|" \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python${_pybasever}m-config \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python${_pybasever}-config \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python3-config

  # replace paths in sysconfig
  sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" \
    "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/_sysconfigdata.py \
    "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/smtpd.py

  # Create python executable with windows subsystem
  cp -f "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe
  ${MINGW_PREFIX}/bin/objcopy --subsystem windows "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe
}

md5sums=('6cafc183b4106476dd73d5738d7f616a'
         '26ca443b9aea454364202e4faf369d2e'
         'c7bba3965c8ad41973a4a235859c3cec'
         '1e1602a0a886ee3682b7ab1e842bd50e'
         '5926f9aec47376d2f83b419fa3f01b88'
         '6ec7f6590f07f70b5fe4b9ef8783f918'
         'e55af8bccfac6ad8f21b86a6fd7660df'
         'c54a067bf85b2fb76c4ad03ba659f31a'
         '012dbe148202b0ea6d41208cf8f0e9bf'
         'b2ca06ebc4f30473ef8e6f0b692b932b'
         'fa1b0dc732e5f7ced816de7edb75da1c'
         'ad4775945185764f594e6afd1607ce16'
         '68288803bef7ea50676db69b96703857'
         '6ed4fa38d8f77a4b358c1ffa71be2f43'
         'a4a018d7f4975f28d501c157e17bfc68'
         'c276551d570dc60f08fd0fda2e426914'
         'ba802c0e270e2f17878358958aa4d38e'
         '395b85f2c9518d7b1a8744520bf16299'
         'edae53bafca467ff4a19604315564f01'
         'd5a11eb93d4b1aa0f781192e6b876fdd'
         '5ec66b2a76fb337bc813b456c19182ba'
         '6c3d8caff05b5ef85f1aca74ca253fbd'
         '8a8cb185e9ba6203d0b56d20a5ac0fca'
         '19ddc4d19d520c4418bebba98e638c6e'
         'b71668da82ce066bb155bd3cc7a0d54c'
         '9ec30b1620f443ae747d2a6d5bbc130c'
         '9364a7ac07092429fad450a0d0b5a7e6'
         '6a3374060a2168abc81d2bad94746aba'
         '375c85be7240762da325fcf6493381b8'
         '93cae0e40cb7540c711309f9e0419f1a'
         '21b6266f65e0ca9bf52e831cf4d62826'
         'f5969ab9f2f22fae58d67d5a9ac16446'
         'a6526e377a072dcb8f172262ba96aee8'
         'fffdc81b34bbca66401dd0d020bae3bd'
         '36a4e20657e44f1baf0dc4b736b739ed'
         '2d8401958a8a88bcf4073262f854c49a'
         '62480d79173f8480da29be657497d8d5'
         'f38ef81df89a97412a06a62bbf3acfd8'
         'aeaab41673a0f4e785d04dd3a0386ce9'
         '327b1fc64dee15840008ebf4406ec428'
         'f3410fd208d2d83e0fb31a5271be77d6'
         '08591ca799a060388fb77b84ed63ba55'
         '310f4e1e55799a44165f612dde732b61'
         '01da23cc4c6cf10b35d16d6d8a4e8ad5'
         '195846f5d0f13f918dd9531b5ddef142'
         'a1947b6077064ed6a1a8faf582165465'
         'e7049e58182fc09b0d1cc6244dd2f4b3'
         '384351e6e3aae8c951cb4676bb6c8e2a'
         '46d8f5489a052c3d62b5a3ae0f1fa143'
         'ad014c33958d719238fc4432a3ee6589'
         'd93d262bd528691ea9effbc519b11066'
         '9af2b3ef746e6fb22815108bfbee7959'
         'e964a3aa6b153d525b4d2382f410035e'
         '7f64aef3f6ccb5992c1ba15bd958a5f3'
         '6bdcd9ccc54b00e83f21ec9a4a13bd25'
         'da344ce0e7413cde2cc306bfce3b2dd2'
         'c3123e0095ddb5dd83891240b1c81e27'
         'a50da626cc7508150823ad881161d6bc'
         '6032537d4250209aab7cf087ef7996af'
         'f835128bbec0e0ba6c3732fe9490abae'
         '5fa444025044a1441fc5402d52bb3314'
         'ea0ea56a476374db85eec2d886a3208e'
         'd0558be496b76f4db118932784298afb'
         '46d1b6dfe7402a0a14c7a02c66db900b'
         'bfb2f356176528f2c987969171cee062'
         '31efe3a49180f1521dc19d7a83178dae'
         '54793cded9bf3634ec0b3bbe6e457c24'
         'f64a91df51a86e9971af3f385e78f5f0'
         '68ab286be58634e661a77c1267e699a8'
         'f429d795ca468fad208f1f7bc9d0892e'
         '94786ce4b406953597796c411f8dcb6c'
         '1e116eed387a1090abfaf73f8d877bc4'
         '725f78d04909226790d01a5a64610e1c'
         '34c8b6b24800b81a57048e84bf30e1e3'
         '0f81569f68dc0cdc6430943cd963e62f'
         '0b9999457d955010f3f2a8460a564fea'
         'c4a497ac25a8438ea0142000d75f1965'
         'abec47dfff50a6b1adf6b78e9466a529'
         '501eaec84e4516a8201679ee45797a59'
         '38b940ff6ef0652c004c461f4393771a')
